package com.example.c94s3plyspringboot.web;

import com.example.c94s3plyspringboot.mapper.SimpleMapper;
import com.example.c94s3plyspringboot.po.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * RestController 控制层组件组件, 是Controller的子类
 */
@RestController
public class HelloAction {

    @RequestMapping("hello")
    public String hello() {
        return "hello world";
    }

    /**
     * 请求参数直接映射到方法参数上
     * 注意: 类型要匹配
     *
     * @param a
     * @param b
     * @return
     */
    @RequestMapping("add")
    public int add(int a, int b) {
        return a + b;
    }

    /**
     * 使用实体类对象接收参数时, 对象属性映射请求参数 ==> 自动装箱
     * 支持属性的嵌套
     * ?name=root&pwd=123&friend.name=lisi&friend.pwd=456
     * ?name=root&pwd=123&friendList[0].name=lisi&friendList[1].name=wangwu
     *
     * @param user
     * @return
     */
    @RequestMapping("login")
    public String login(User user) {
        return user.toString();
    }

    /**
     * RestController 会自动将对象转成 json 格式字符串
     *
     * @param user
     * @return
     */
    @RequestMapping("reg")
    public User reg(User user) {
        return user;
    }

    @RequestMapping("query")
    public List<User> reg() {
        List<User> ret = new ArrayList<>();
        ret.add(new User("zhangsan", "123"));
        ret.add(new User("zhangsan1", "123"));
        ret.add(new User("zhangsan2", "123"));
        ret.add(new User("zhangsan3", "123"));
        return ret;
    }

    @Resource
    private SimpleMapper sm;

    @RequestMapping("now")
    public Date now() {
        return sm.getNow();
    }

}
